package com.lagou.homework141;

import java.io.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

/**
 * 使用 List 集合实现简易的学生信息管理系统，要求打印字符界面提示用户选择相应的功能，
 * 根据用户输入的选择去实现增加、删除、修改、查找以及遍历所有学生信息的功能。
 * <p>
 * 基于学生信息管理系统增加以下两个功能：
 * a.自定义学号异常类和年龄异常类，并在该成员变量不合理时产生异常对象并抛出。
 * b.当系统退出时将 List 集合中所有学生信息写入到文件中，当系统启动时读取文件中所 有学生信息到 List 集合中。
 */
public class StudentInfoManagerTest {

    public static void main(String[] args) {

//        try {
//            StudentInfoManager.add(new Student("1", "huawei", 10));
//        } catch (IdException | AgeException e) {
//            e.printStackTrace();
//        }
        System.out.println("系统启动...");
        StudentInfoManager.readFile(true);
//        try {
//            StudentInfoManager.add(new Student("1", "huawei", 10));
//        } catch (IdException | AgeException e) {
//            e.printStackTrace();
//        }
//        StudentInfoManager.readFile();
        initUI();
    }

    public static void initUI() {
        System.out.println("-----------------------学生信息管理系统------------------");
        System.out.println("        1.添加  2.修改   3.查询  4.删除  5.读文件  6.写文件  0.退出                 ");
        System.out.print("请选择：");
        Scanner scanner = new Scanner(System.in);
        int input = scanner.nextInt();
        String name;
        switch (input) {
            case 1:
                System.out.print("【添加】请输入学号，姓名，年龄：");
                String id = scanner.next();
                name = scanner.next();
                int age = scanner.nextInt();
                try {
                    StudentInfoManager.add(new Student(id, name, age));
                } catch (IdException | AgeException e) {
                    e.printStackTrace();
                }
                break;
            case 2:
                StudentInfoManager.findAll();
                System.out.println("【修改】请输入序号，要修改的姓名");
                int index = scanner.nextInt();
                name = scanner.next();
                StudentInfoManager.update(index, name);
//                findAll();
                break;
            case 3:
                System.out.println("【查询】请输入姓名(输入all显示所有)");
                name = scanner.next();
                if (name.equalsIgnoreCase("all"))
                    StudentInfoManager.findAll();
                else {
                    Student stu = StudentInfoManager.find(name);
                    System.out.println("查询结果：" + stu);
                }
                break;
            case 4:
                System.out.println("【删除】请输入姓名");
                name = scanner.next();
                StudentInfoManager.delete(name);
                break;
            case 5:
                System.out.println("【读文件】");
                StudentInfoManager.readFile(false);
                break;
            case 6:
                System.out.println("【写文件】");
                StudentInfoManager.writeFile();
                break;
            case 0:
//                StudentInfoManager.writeFile();
                System.exit(0);
                break;
            default:
                break;
        }
        initUI();
    }


}
